﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Bukstor.Biz;
using System.Text;

namespace Bukstor.UI
{
    public partial class Formulario_web13 : System.Web.UI.Page
    {
        BukstorBDEntities Entidades;
        int idLibro;
        Libro libro;

        protected void Page_Load(object sender, EventArgs e)
        {
            idLibro = int.Parse(Request["titulo"]);
            Entidades = new BukstorBDEntities();
            cargarLibro();
        }

        private void cargarLibro()
        {
            libro = Entidades.Libros.First(i => i.id == idLibro);
            if (!libro.Autores.IsLoaded) libro.Autores.Load();
            if (!libro.EditorialReference.IsLoaded) libro.EditorialReference.Load();
            if (!libro.InventarioReference.IsLoaded) libro.InventarioReference.Load();
            imgTapa.ImageUrl = "~/images/tapas/" + (libro.tapa == null ? "na.gif" : libro.tapa);
            lblTitulo.Text = libro.titulo;
            blDetalles.Items.Clear();
            blDetalles.Items.Add("ISBN: " + libro.isbn);
            blDetalles.Items.Add(autoresToString(libro.Autores));
            blDetalles.Items.Add("Editorial: " + libro.Editorial.nombre);
            lblSinopsis.Text = libro.sinopsis;
            lblPrecio.Text = libro.Inventario.precioUnitario.ToString("C");
            ibtAgregar.ImageUrl = "~/images/order_" + (libro.Inventario.cantidad > 0 ? "now.gif" : "later.gif");
        }

        private string autoresToString(IEnumerable<Autor> autores)
        {
            StringBuilder salida = new StringBuilder();
            Autor autor;
            if (autores.Count() == 1)
            {
                autor = autores.First();
                salida.Append("Autor: ").Append(autor);
            }
            else
            {
                salida.Append("Autores: ");
                for (int i = 0; i < autores.Count(); i++)
                {
                    salida.Append(autores.ElementAt(i));
                    if (i < autores.Count() - 1) salida.Append(", ");
                }
            }
            return salida.ToString();
        }

        protected void ibtAgregar_Click(object sender, ImageClickEventArgs e)
        {
            if (libro.Inventario.cantidad == 0)
            {
                Response.Redirect("~/miembros/Reservar.aspx?titulo=" + libro.id, true);
            }
            else
            {
                (Session["carrito"] as Carrito).Agregar(idLibro);
                Response.Redirect("~/CarritoDeCompras.aspx", true);
            }
        }
    }
}
